#pragma once

#include <gofcl_gpio_r.h>

typedef struct {
	u8_s MD0 : 2;
	u8_s CTL0 : 2;
	u8_s MD1 : 2;
	u8_s CTL1 : 2;
	u8_s MD2 : 2;
	u8_s CTL2 : 2;
	u8_s MD3 : 2;
	u8_s CTL3 : 2;
	u8_s MD4 : 2;
	u8_s CTL4 : 2;
	u8_s MD5 : 2;
	u8_s CTL5 : 2;
	u8_s MD6 : 2;
	u8_s CTL6 : 2;
	u8_s MD7 : 2;
	u8_s CTL7 : 2;
} gpio_ctl0_s;

_Static_assert(sizeof(gpio_ctl0_s) == 4, "Struct gpio_ctl0_s defined error!");

static inline void gpio_wreg_ctl0_s(gpio_qe gpio_q, gpio_ctl0_s ctl0) {
	union {
		gpio_ctl0_s c;
		u32_s u;
	} cu = {
		.c = ctl0,
	};
	gpio_wreg(gpio_q, GPIO_CTL0_R, cu.u);
}
